package com.particle.data.domain.company;

import com.particle.common.domain.AggreateRoot;
import com.particle.data.common.tool.SomeMd5Tool;
import com.particle.global.domain.DomainFactory;
import com.particle.global.domain.Entity;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * 企业抽查检查 领域模型
 * </p>
 *
 * @author yw
 * @since 2025-06-20 16:19:39
 */
@Data
@Entity
public class DataCompanySpotCheck extends AggreateRoot {

    private DataCompanySpotCheckId id;

    /**
    * 企业表ID
    */
    private Long companyId;

    /**
    * 检查实施机关
    */
    private String checkInstitute;

    /**
    * 检查实施机关公司id
    */
    private Long checkInstituteCompanyId;

    /**
    * 检查类型，如：检查
    */
    private String checkTypeName;

    /**
    * 检查日期
    */
    private LocalDate checkDate;
    
    /**
    * 检查结果
    */
    private String checkResult;

    /**
    * 数据md5,check_institute + check_type_name + check_date + check_result
    */
    private String dataMd5;

    /**
    * 最后处理时间，不代表数据有变动，用来表示数据处理过，但可能无需处理，不影响版本号变动
    */
    private LocalDateTime latestHandleAt;


    public void initForAdd() {
        LocalDateTime now = LocalDateTime.now();
        this.latestHandleAt = now;
        // initDataMd5();
    }
    public void initForUpdate() {
        LocalDateTime now = LocalDateTime.now();
        this.latestHandleAt = now;
        // initDataMd5();
    }


    public void initDataMd5() {
        this.dataMd5 = SomeMd5Tool.dataCompanySpotCheckDataMd5(checkInstitute, checkTypeName, checkDate, checkResult);
    }

    /**
     * 创建企业抽查检查领域模型对象
     * @return 企业抽查检查领域模型对象，该对应所有属性为空，需要进行初始化操作
     */
    public static DataCompanySpotCheck create(){
        return DomainFactory.create(DataCompanySpotCheck.class);
    }
}
